package de.haw.vehicle;

import de.haw.adt.interfaces.IAcc;
import de.haw.adt.interfaces.IForce;
import de.haw.adt.interfaces.IMass;
import de.haw.adt.interfaces.ISpeed;

public interface IVehicle {
	/**
	 * Beschleunigung, also die Geschwindigkeitsänderung pro Zeit
	 * 
	 * @param acc
	 */
	public void setAcc(IAcc acc);

	public IAcc getAcc();

	/**
	 * Maximale Traktion, die erreicht werden kann
	 * @param forcePropAbs
	 */
	public void setForcePropAbs(double forcePropAbs);
	
	/**
	 * Maximale Traktion, die erreicht werden kann
	 */
	public double getForcePropAbs();
	
	/**
	 * Ist im moment der gleiche Wert wie {@link #getForcePropAbs()}
	 * @param forceProp
	 */
	public void setForceProp(double forceProp);

	public double getForceProp();

	public double getDragConst();

	public void setForce(IForce force);

	public IForce getForce();

	public void setTime(double time);

	public double getTime();

	public void setPos(double pos);

	public double getPos();

	//public void setSpeed(double speed);
	//Änderung für ADT
	public void setSpeed(ISpeed speed);

	public ISpeed getSpeed();

	public void setPowerProp(double powerProp);

	public double getPowerProp();

	public double getLevel();

	public void setLevel(double level);

	public IMass getMass();
	
	public void setForcePropMax(double forcePropMax);
	public double getForcePropMax();
	public double getPowerPropMax();
	public void setForceDrag(double forceDrag);
	public double getForceDrag();
	
	public void setASR(boolean asr);
	public boolean isASR();
	public void setABS(boolean abs);
	public boolean isABS();
	
	// Bremse
	public double getBrakelevel();
	public void setBrakelevel(double brakelevel);

	public double getForceBrakeMax();
	public void setForceBrakeMax(double forceBrakeMax);

	public void setForceBrakeAbs(double min);
	public double getForceBrakeAbs();

	public void setForceBrake(double forceBrake);
	public double getForceBrake();
	
	public void setPowerBrake(double powerBrake);
	public double getPowerBrake();
	
	public void setDrive(boolean drive);
	public boolean isDrive();
}
